package biblio.metier;

import java.util.Date;
import java.util.Iterator;

public class Adherent extends Utilisateur
{

	private String telephone;
	private int nbMaxPrets = 3;
	private int dureeMaxPrets = 15;
	private boolean conditionsPretAcceptees;
	private int nbRetards = 0;

	public Adherent(String unNom, String unPrenom, int unIdUtilisateur,	String unPwd, String unPseudonyme, String unTelephone, int unNbMax,int uneDureeMax)
	{
		super(unNom, unPrenom, unIdUtilisateur, unPwd, unPseudonyme);
		telephone = unTelephone;
		nbMaxPrets = unNbMax;
		dureeMaxPrets = uneDureeMax;
	}

	public Adherent(String unNom, String unPrenom, int unIdUtilisateur, String unPwd, String unPseudonyme)
	{	super(unNom, unPrenom, unIdUtilisateur, unPwd, unPseudonyme);	}

	public String getTelephone()
	{	return telephone;	}

	public int getNbMaxPrets()
	{	return nbMaxPrets;	}

	public int getDureeMaxPrets()
	{	return dureeMaxPrets;	}

	public int getNbRetards()
	{	return nbRetards;	}

	public boolean isConditionsPretAcceptees()
	{	return conditionsPretAcceptees;	}

	public void setTelephone(String telephone)
	{	this.telephone = telephone;	}

	public void setNbMaxPrets(int nbMaxPrets)
	{	this.nbMaxPrets = nbMaxPrets;	}

	public void setDureeMaxPrets(int dureeMaxPrets)
	{	this.dureeMaxPrets = dureeMaxPrets;	}

	public void setConditionsPretAcceptees(boolean conditionsPretAcceptees)
	{	this.conditionsPretAcceptees = conditionsPretAcceptees;	}

	public void setNbRetards(int nbRetards)
	{	this.nbRetards = nbRetards;	}

	
	// M�thode
	@Override
	public void addEmpruntEnCours(Exemplaire unExemplaire) throws BiblioException
	{
		try
		{
			boolean testeur = true; 
			
			if(super.getNbEmpruntsEnCours()<nbMaxPrets)
				{	
					for (Iterator<EmpruntEnCours> iterator = super.getEmpruntEnCours().iterator(); iterator.hasNext();)
					{
						EmpruntEnCours e = iterator.next();
						if(e.isPretEnRetard(dureeMaxPrets) == true)
							{	
								testeur = false;
								throw new BiblioException("Emprunt non autoris� car livre en retard");
							}
					}
				}
			else
			{
				testeur = false;
				throw new BiblioException("Le nombre d'emprunt autoris� est d�pass�");
			}
			
		
		
			if(testeur == true)
			{
				super.addEmpruntEnCours(unExemplaire);
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	public void addEmpruntEnCours(Exemplaire unExemplaire, Date uneDate) throws BiblioException
	{
		try
		{
			boolean testeur = true; 
			
			if(super.getNbEmpruntsEnCours()<nbMaxPrets)
				{	
					for (Iterator<EmpruntEnCours> iterator = super.getEmpruntEnCours().iterator(); iterator.hasNext();)
					{
						EmpruntEnCours e = iterator.next();
						if(e.isPretEnRetard(dureeMaxPrets) == true)
							{	
								testeur = false;
								throw new BiblioException("Emprunt non autoris� car livre en retard");
							}
					}
				}
			else
			{
				testeur = false;
				throw new BiblioException("Le nombre d'emprunt autoris� est d�pass�");
			}
			
		
		
			if(testeur == true)
			{
				super.addEmpruntEnCours(unExemplaire, uneDate);
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	@Override
	public String toString()
	{
		return super.toString() + "Adherent [telephone=" + telephone + ", nbMaxPrets="
				+ nbMaxPrets + ", dureeMaxPrets=" + dureeMaxPrets
				+ ", conditionsPretAcceptees=" + conditionsPretAcceptees
				+ ", nbRetards=" + nbRetards + "]";
	}
	
	
	
}
